[C] Criptografia por Inversão de bits
Publicado por Enzo de Brito Ferber 04/03/2006
[ Hits: 13.263 ]
Homepage: http://www.maximasonorizacao.com.br
Programa de criptografia simples que
usa o operador ~(complemento de 1).
O operador ~ faz o seguinte:
01000001 ~
10111110
Todos os bits 0 passam a ser 1, e
todos os 1 passam a ser 0. O
programa criptografa um arquivo
inteiro, não uma só palavra.
#include <stdio.h>
#include <stdlib.h>
char encode(char ch){
return(~ch);
}
int set(){
system("clear");
}
int abrirArquivo(char caminho[]){
FILE *arqEntrada;
FILE *arqSaida;
char *textoEntrada;
char *textoSaida;
char ch;
int i=2; //para poder ser usado para alocação dinamica
if((arqEntrada = fopen(caminho, "r")) == 0){
printf("Impossivel abrir o arquivo...\n");
printf("Pressione ENTER para continuar...\n");
__fpurge(stdin);
ch = getchar();
main();
exit(1);
}
if((arqSaida = fopen("texto_criptografado.txt", "w")) == 0){
printf("Impossivel abrir o arquivo...\n");
printf("Pressione ENTER para continuar...\n");
__fpurge(stdin);
ch = getchar();
main();
}
printf("Realizando criptografia...\n");
while(!feof(arqEntrada)){
if((textoEntrada = (char *)calloc(i, sizeof(char)))== 0){
printf("Memoria insuficiente...\n");
exit(1);
}
if((textoSaida = (char *)calloc(i, sizeof(char)))== 0){
printf("Memoria insuficiente...\n");
exit(1);
}
fscanf(arqEntrada, "%c", &textoEntrada[i-2]);
if(textoEntrada[i-2] == '{FONTE}') break;
textoSaida[i-2] = encode(textoEntrada[i-2]);
fprintf(arqSaida, "%c", textoSaida[i-2]);
i++;
}
printf("Criptografia do arquivo realizada com sucesso...\n\n\n");
fclose(arqEntrada);
fclose(arqSaida);
free(textoEntrada);
free(textoSaida);
system("cat texto_criptografado.txt");
__fpurge(stdin);
printf("\n\nPressione ENTER para continuar...");
ch = getchar();
}
int main(void){
char caminho[100];
LOOP:
set();
printf("\t\t* * * * * CRIPTOGRAFIA DE ARQUIVO * * * * *\n\n\n");
printf("Arquivo: ");
__fpurge(stdin);
scanf("%[^\n]", caminho);
abrirArquivo(caminho);
goto LOOP;
}
Código C para gerar hashes DES e MD5
Algoritmo de euclides estendido (calcula o D RSA)
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (4)
Thinkpads são bons mesmo ?! (4)
existe algum hub de jogos online similiar ou igual dos browser (6)
Como botar o efeito de deslocar janelas (win + setas - windows) no lin... (0)









